A number of “front-end” image processing techniques are often performed in imaging devices and video devices. Such devices typically include image sensors to capture raw image data, e.g., of individual still images or a sequence of images that form a video sequence. Image processing techniques are often performed on the raw data in order to improve image quality. Examples of such image processing techniques include 2-dimensional filtering, demosaicing, lens rolloff correction, scaling, color correction, color conversion, noise reduction filtering, and spatial filtering, to name a few. The front-end processing may improve visual image quality attributes such as tone reproduction, color saturation, hue reproduction and sharpness.
In many cases, a device may need to support image processing techniques for several different images of different sizes. Indeed, the image sizes that need to be supported by the device can vary drastically in some cases. For example, the device may present very small image sequences in real-time in the viewfinder of the device, and may need to quickly perform image processing on such images to improve image quality in the viewfinder. In addition, the device may perform the image processing techniques on much larger images, such as still images captured by the device, or a video sequence of images captured by the device. In order to support image processing for different images, conventional wisdom has mandated line buffers in the image processing modules that accommodate an image width associated with the largest images that can be processed by the device. The line buffers refer to small, temporary storage locations used to store a line or part of a line of image data. Line buffers are typically on-chip and associated with one or more processing modules.